<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 判断一个字符串 'abcoefoxyozzopp'中出现次数最多的字符 并统计次数
        // 核心算法 利用charAt()遍历这个字符串
        // 把每个字符都存储给对象，如果对象没有该属性 就为1 如果存在了就+1
        // 遍历对象 得到最大值和该字符
        var str = 'abcoefoxyozzopp'
        var o = {}
        for (var i = 0; i < str.length; i++) {
            // [index]与charAt()等效 比它方便一点在写法上
            var index = str[i]
            if (o[index]) {
                o[index]++
            } else {
                o[index] = 1
            }
        }
        console.log(o);
        var max = 0
        var ch = ''
        for (var k in o) {
            if (o[k] > max) {
                max = o[k]
                ch = k
            }
        }
        console.log(max);
        console.log(ch);

        // for (var i = 0; i < str.length; i++) {
        //     var chars = str.charAt(i)
        //     if (o[chars]) {
        //         o[chars]++
        //     } else {
        //         o[chars] = 1
        //     }
        // }
        // console.log(o);
        // // 遍历对象
        // var max = 0
        // var str1 = ''
        // for (var k in o) {
        //     if (o[k] > max) {
        //         max = o[k]
        //         str1 = k
        //     }
        // }
        // console.log(max);
        // console.log('最大值的字符是' + str1);

                                   // 习题

        // 给定一个字符串 如：'abaasdffggghhjjkkgfddsssss3444343'问题如下
        // 1.字符串的长度
        // 数组才有长度 所以需要转为数组看length
        // 又因为没有分隔符直接是split转换数组结果会看成一个整体转换 所以不行
        // 最后考虑新声明一个空数组 push 字符串里的所有元素  charAt()通过位置返回字符
        //     var str = 'abaasdffggghhjjkkgfddsssss3444343'
        //     var arr = []
        //    for(var i = 0; i < str.length;i++) {
        //        arr.push(str.charAt(i))
        //    }
        //    console.log(arr);//length：33
        // 2.取出指定位置的字符。如 0 3 5 9等
        // var str = 'abaasdffggghhjjkkgfddsssss3444343'
        // console.log(str[0]);//a
        // console.log(str[3]);//a
        // console.log(str[5]);//d
        // console.log(str[9]);//g

        // 3.查找指定字符是否在以上字符串存在，如 i c b 等
        // indexOf()可以根据字符查找位置 如果存在则返回索引号 不存在则返回-1
        // var str = 'abaasdffggghhjjkkgfddsssss3444343'
        // console.log(str.indexOf('i'));//-1
        // console.log(str.indexOf('c'));//-1
        // console.log(str.indexOf('b'));//1

        // 4.替换指定字符 如 g替换为22， ss替换为b等操作方法
        // indexOf根据字符查找索引
        // replace()替换字符
        // if大法 ififif 哈哈哈
        // var str = 'abaasdffggghhjjkkgfddsssss3444343'
        // // var str1 = ''
        // if (str.indexOf('g') !== -1) {
        //     str = str.replace('g', '22')
        // }
        // if (str.indexOf('ss') !== -1) {
        //     str = str.replace('ss', 'b')
        // }
        // console.log(str);

        // 5.截取指定开始位置到结束位置的字符串 如 取得1-5的字符串
        // var str = 'abaasdffggghhjjkkgfddsssss3444343'
        // console.log(str.substr(1,5));

        // 6.找出以上字符串中出现次数最多的字符和出现的次数。
        // charAt()通过位置找字符
        // 创建一个空对象 把每一个字符当做对象的属性
        // 一开始对象为空所有值赋予 1
        // 直到有重复的就自加1
        // var str = 'abaasdffggghhjjkkgfddsssss3444343'
        // var o = {}
        // for (var i = 0; i < str.length; i++) {
        //     var chars = str.charAt(i)//把每一个字符都作为o对象的属性来看
        //     if (o[chars]) { //如果o里面有该属性了就自加1
        //         o[chars]++
        //     } else {
        //         o[chars] = 1 //否则就先赋值为 1
        //     }
        // }
        // console.log(o);
        // // 遍历对象 for in
        // var max = 0
        // var ch = ''
        // for(var k  in o) {
        //     if(o[k] > max ) {
        //         max = o[k]
        //         ch = k //当找到最大值时 也就代表找到了这个值的属性
        //     }
        // }
        // console.log(max);
        // console.log('出现最多的字符是'+ ch);
    </script>
</head>

<body>

</body>

</html>